import pandas as pd

"""
在 pandas 中，
    投票变化方面的应用主要包括投票计数、投票汇总、投票趋势分析和投票结果预测。
    其中，
        pct_change（pct：percentage 百分比） 函数在 pandas 中广泛应用于
        计算百分比变化，
        帮助分析数据的增长率、
        比较列之间的相对变化、
        检测异常值
        以及进行特征工程和模型构建。
"""

df = pd.DataFrame(data=[["20230521", "20230522", "20230523", "20230524", "20230525"] * 2,
                        ["股票A"] * 5 + ["股票B"] * 5,
                        [11, 14, 12, 15, 17, 21, 24, 22, 24, 23]],
                  index=["日期", "名称", "价格"]).T
print(df)

# 需要增加一列，计算各支股票相对前一天的变化率。
"""
对一个数据框进行按股票名称分组，并计算每个分组内的价格列的百分比变化。
它使用了groupby函数按照指定的列名进行分组，
然后使用transform函数对每个分组内的价格列进行百分比变化计算。
最终返回一个具有相同长度和索引的序列，包含了每个分组内价格列的百分比变化值。
"""

tmp = df.groupby("名称")["价格"].transform("pct_change")
# pct_change：是一个 pandas 中的函数（即 pd.Series.pct_change，在这里可以直接写字符串）
# 用于计算序列中相邻元素的百分比变化。
# (新 - 旧) / 旧  如： (14 - 11) / 11  (12 - 14) / 14

df = df.assign(rate=tmp)
print(df)

